home *** CD-ROM | disk | FTP | other *** search
- /*
- * Example of client using UNIX domain datagram protocol.
- */
-
- #include "unix.h"
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- int sockfd, clilen, servlen;
- char *mktemp();
- struct sockaddr_un cli_addr, serv_addr;
-
- pname = argv[0];
-
- /*
- * Fill in the structure "serv_addr" with the address of the
- * server that we want to send to.
- */
-
- bzero((char *) &serv_addr, sizeof(serv_addr));
- serv_addr.sun_family = AF_UNIX;
- strcpy(serv_addr.sun_path, UNIXDG_PATH);
- servlen = sizeof(serv_addr.sun_family) + strlen(serv_addr.sun_path);
-
- /*
- * Open a socket (a UNIX domain datagram socket).
- */
-
- if ( (sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
- err_dump("client: can't open datagram socket");
-
- /*
- * Bind a local address for us.
- * In the UNIX domain we have to choose our own name (that
- * should be unique). We'll use mktemp() to create a unique
- * pathname, based on our process id.
- */
-
- bzero((char *) &cli_addr, sizeof(cli_addr)); /* zero out */
- cli_addr.sun_family = AF_UNIX;
- strcpy(cli_addr.sun_path, UNIXDG_TMP);
- mktemp(cli_addr.sun_path);
- clilen = sizeof(cli_addr.sun_family) + strlen(cli_addr.sun_path);
-
- if (bind(sockfd, (struct sockaddr *) &cli_addr, clilen) < 0)
- err_dump("client: can't bind local address");
-
- dg_cli(stdin, sockfd, (struct sockaddr *) &serv_addr, servlen);
-
- close(sockfd);
- unlink(cli_addr.sun_path);
- exit(0);
- }
-